package com.sale.table.mapper;

import com.sale.table.domain.*;
import com.sale.table.domain.AfterCome;
import com.sale.table.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 财务报表
 * @Date 23-09-15
 * @Author hl
 **/
public interface TableGoodsMapper {

    /**
     * 往来单位一览表 (客户)
     * @param  goodsComeVo
     * @return   Page<GoodsCome>
     */
    List<GoodsCome> selectTableComeList(@Param("goodsComeVo") GoodsComeVo goodsComeVo);

    /**
     * 往来单位一览表 (供应商)
     * @param goodsComeVo
     * @return   Page<GoodsCome>
     */
    List<GoodsCome> selectTableSupplierList(GoodsComeVo goodsComeVo);

    /**
     * 客户对账单
     */
    List<GoodsReconciliation> selectClientRightList(GoodsReconciliationVo goodsReconciliationVo);

    // 查询所有客户
    List<GoodsClient> selectGoodsClient(GoodsReceivableVo goodsReceivableVo);

    /**
     * 查询 (销售发货单、销售退货单、核销单)
     */
    List<GoodsReceivable> selectReceivableList(GoodsReceivableVo goodsReceivableVo);

    /**
     * 查询 (收款单)
     */
    List<GoodsReceivable> selectGoodsList(GoodsReceivableVo goodsReceivableVo);

    /**
     * 客户对账单(财务)
     */
    List<GoodsReconciliation> selectGoodsRightList(GoodsReconciliationVo goodsReconciliationVo);

    /**
     * 客户对账单(期初)
     */
    Double selectThePeriod(GoodsReconciliationVo goodsReconciliationVo);

    /**
     * 供应商对账单
     */
    List<GoodsReconciliation> selectSupplierRightList(GoodsSupplierVo goodsSupplierVo);

    /**
     * 供应商对账单(财务)
     */
    List<GoodsReconciliation> selectPaymentRightList(GoodsSupplierVo goodsSupplierVo);

    /**
     * 供应商对账单(期初)
     */
    Double selectPaymentPeriod(GoodsSupplierVo goodsSupplierVo);

    /**
     * 查询供应商
     */
    List<GoodsSupplier> selectGoodsSupplier(GoodsCopeWithVo goodsCopeWithVo);

    // 查询 (采购入库单、采购退货单、核销单、付款单)
    List<GoodsCopeWith> selectCopeWithList(GoodsCopeWithVo goodsCopeWithVo);

    /**
     * 查询 (付款单)
     */
    List<GoodsCopeWith> selectGoodsPaymentList(GoodsCopeWithVo goodsCopeWithVo);

    /**
     * 账户余额
     */
    List<GoodsAmount> selectSysList(GoodsAmountVo goodsAmountVo);

    /**
     * 财务金额
     */
    List<GoodsAmount> selectAmountList(GoodsAmountVo goodsAmountVo);

    /**
     * 查询所有账户
     */
    List<PullDown> selectPayerName();

    /**
     * 利润表
     */
    GoodsProfit selectProfitList(GoodsProfitVo goodsProfitVo);

    /**
     * 期初
     */
    List<GoodsCome> selectTablePeriodList(GoodsComeVo goodsComeVo);

    /**
     * 查询所有客户
     */
    List<GoodsClient> selectGoodsComeClient(GoodsComeVo vo);

    /**
     * 查询所有供应商
     */
    List<GoodsSupplier> selectGoodsComeSupplier(GoodsComeVo goodsComeVo);

    /**
     * 期初
     */
    List<GoodsCome> selectTablePeriodList2(GoodsComeVo goodsComeVo);

    /**
     * 查看客户核销数据
     */
    List<AfterCome> selectAfterComeList(GoodsComeVo goodsComeVo);

    /**
     * 查看供应商核销数据
     */
    List<AfterCome> selectAfterComeList2(GoodsComeVo goodsComeVo);
}
